package fr.alma.ihm;

import java.io.IOException;

/**
 * Classe de controle du navigateur.
 * @author KROMMENHOEK Cedric
 *
 */
public final class ControleNavigateur {
	
	/**
	 * Identification de la plateforme Windows.
	 */
    private static final String WIN_ID = "Windows";

    /**
     * Le navigateur par defaut sous Windows.
     */
    private static final String WIN_PATH = "rundll32";

    /**
     * Le flag d'affichage de l'URL.
     */
    private static final String WIN_FLAG = "url.dll,FileProtocolHandler";

    /**
     * Le navigateur par defaut sous UNIX.
     */
    private static final String UNIX_PATH = "firefox";

    /**
     * Le flag d'affichage de l'URL.
     */
    private static final String UNIX_FLAG = "";

	/**
	 * Methode d'affichage de l'URL.
	 * @param url l'URL a afficher
	 */
	public static void displayURL(String url) {
        boolean windows = isWindowsPlatform();
        String cmd = null;
        try {
            if (windows) {
                // cmd = 'rundll32 url.dll,FileProtocolHandler http://...'
                cmd = WIN_PATH + " " + WIN_FLAG + " " + url;
                Runtime.getRuntime().exec(cmd);
            } else {
                // cmd = 'firefox http://...'
                cmd = UNIX_PATH + " " + UNIX_FLAG + " " + url;
                Runtime.getRuntime().exec(cmd);
            }
        } catch(IOException x) {
            // couldn't exec browser
            System.err.println("Could not invoke browser, command=" + cmd);
            System.err.println("Caught: " + x);
        }
    }
	
    /**
     * Methode determinant si l'application est executee sur un systeme Windows.
     * @return vrai si l'application est executee sur un systeme Windows
     */
    public static boolean isWindowsPlatform() {
        String os = System.getProperty("os.name");
        return (os != null) && (os.startsWith(WIN_ID));
    }
    
    /**
     * Constructeur.
     */
    private ControleNavigateur() {}

}
